//1.webpack的引入
const path = require('path');
//3.html插件的引入
const HtmlWebpackPlugin = require("html-webpack-plugin");
// 4.公共文件的引入
const CopyWebpackPlugin = require("copy-webpack-plugin");



// 2,五大'护法'配置
module.exports = {
    //2.1入口配置
    entry: path.resolve(__dirname, '../src/index.js'),
    //2.2出口配置
    output: {
        path: path.resolve(__dirname, '../build'),//打包后生成的文件放入到build文件夹中
        filename: './js/main.js' ,//打包后生成的js文件全部放入js文件夹中并取名为main.js
        publicPath:'/'
    },

    // 2.4loader的配置
    module: {
        rules: [
            // {
            //     test: /\.html$/i,
            //     use: [
            //         'html-loader'
            //     ]
            // }

            // ejs的loader
            {
                test: /\.ejs$/i,
                loader: 'ejs-loader',  // 这里必须要用loader,不能用use                   
                options:{
                    variable:'data',   // variable 变量的意思
                }
            }

        ]
    },

    //2.3插件的的配置(实例化的过程)
    plugins: [ //插件的意思
        //3.2生成html文件 并设置对应的参照模板
        new HtmlWebpackPlugin({
            template: path.resolve(__dirname, "../public/index.html")
        }),
        //4.2复写公共文件到打包目录
        new CopyWebpackPlugin({
            patterns: [{
                from: path.resolve(__dirname, "../public"),
                to: "public",
                globOptions: {
                    ignore: ["**/index.html"]

                }
            }],
        })
    ],

    // 配置路径别名
    resolve: {
        alias: {
            $v: path.resolve(__dirname, "../src/views"),
            $r: path.resolve(__dirname, "../src/routes")

        },
        // 配置引入文件时,省略后缀名,自动添加后缀的顺序
        extensions:['.js','.json','.ejs']
    },
    //设置模式
    mode: "production"//mode 模式的意思,production 生产的意思  (生产模式)

}